package com.viknix.threadpool.manager.server.dependence.monitor.listeners;

import com.viknix.threadpool.manager.server.dependence.monitor.event.Event;

import java.util.List;

/**
 * @Author: Dongqi
 * @Date: 2021/11/15 19:09
 * @Version 1.0
 * @Description: 可以收听多个事件的订阅者。
 */
@SuppressWarnings("PMD.AbstractClassShouldStartWithAbstractNamingRule")
public abstract class SmartListener extends Listener {

    /**
     * 返回 SmartListener 感兴趣的事件类型集合。
     *
     * @return The interestd event types.
     */
    public abstract List<Class<? extends Event>> subscribeTypes();

    /**
     * 覆盖掉原来接口中的方法，并且不允许子类重写
     *
     * @return
     */
    @Override
    public final Class<? extends Event> subscribeType() {
        return null;
    }

    /**
     * 强行忽略过期事件
     *
     * @return false
     */
    @Override
    public final boolean ignoreExpireEvent() {
        return false;
    }
}
